from django.db import models

from lapi_app.models.testcase_model.testcase import Testcase, Asserts
from lapi_app.models.user_model.user_info import Userinfo


# 任务
class Task(models.Model):
    task_name = models.CharField("任务名称", max_length=255, null=False)
    run_type = models.IntegerField("执行类型", null=False, default=1)  # 1.接口自动化，2.app自动化
    devices_list = models.JSONField("执行设备列表", default=list, null=True)
    task_case = models.JSONField("接口任务列表", max_length=255, default=dict, null=False)
    task_status = models.IntegerField("任务状态", null=False, default=2)  # 1:开启， 2:关闭
    active = models.IntegerField("执行状态", null=False, default=1)  # 1:未执行， 2:等待执行，3:执行完成
    ding_talk = models.CharField("钉钉推送", null=True, max_length=255)  # 钉钉推送地址
    task_type = models.IntegerField("定时任务类型", null=False, default=1)  # 1.某个时刻 2.多久运行一次 3.每周几运行
    task_time = models.CharField("任务时间", null=True, max_length=255)  # type=1,时刻
    task_hour = models.CharField("任务时间", null=True, max_length=255)  # type=2, 小时
    task_week_days = models.CharField("周几执行", null=True, max_length=255)  # type=3, 周几
    task_week_times = models.CharField("周几几点执行", null=True, max_length=255)  # type=3, 几点
    task_description = models.CharField("任务描述", null=True, max_length=255)
    user = models.ForeignKey(Userinfo, on_delete=models.CASCADE)
    result_id = models.CharField("app自动化结果id", null=True, max_length=255)
    create_time = models.DateTimeField("创建时间", auto_now_add=True)
    update_time = models.DateTimeField("更新时间", auto_now_add=True)

    def __str__(self):
        return self.task_name


# 任务结果
class Task_result(models.Model):
    case = models.ForeignKey(Testcase, on_delete=models.CASCADE)
    task_status = models.IntegerField("任务是否成功", null=False)
    task_result = models.JSONField("任务结果", null=True, default=dict)
    task_runtime = models.DateTimeField("任务执行时间", auto_now_add=True)
    task_res_time = models.TextField("接口响应时间", null=True)
    task_assert = models.JSONField("断言结果", null=True, default=dict)
    task_extract = models.JSONField("参数提取", null=True, default=dict)
    task = models.ForeignKey(Task, on_delete=models.CASCADE)

    def __str__(self):
        return self.task.task_name
